package com.zhangxin.aiInterview.manager.xfapi.http;

import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;

/**
 * deepSeek生成笔试题目
 */
public class GenerateExamQuestionDeepSeekApi {
    // 静态变量缓存 Prompt（仅初始化一次）
    private static final String SYSTEM_PROMPT;

    static {
        // 初始化 System Prompt
        SYSTEM_PROMPT = "你是一位笔试出题专家，根据用户提供面试公司、面试岗位和面试的身份，生成这个公司的这个岗位，对应用户面试身份的笔试题，\n" +
                "生成笔试题的要求为：\"生成10个选择题，6个问答题 2个编程题。\" +\n" +
                "                \"##要求：生成选择题题目、问答题题目、编程题题目，返回的数据为json格式，按照如下要求返回数据 type等于1是选择题，type等于2是问答题，type等于3是编程题 。\" +\n" +
                "                \"[ { \"type\": 1, \"question\": [ { \"title\": \"题目标题\", \"option\": [ {\"value\": \"选项内容\", \"key\": \"A\"}, {\"value\": \"选项内容\", \"key\": \"B\"} ], \"correct_answer\": \"正确选项\", \"correct_answer_content\": \"正确选项内容\"} ] }, { \"type\": 2, \"question\": [\"问答题1\", \"问答题2\"] }, { \"type\": 3, \"question\": [\"编程题(包括编程题题目，题目描述，输入用例，输出用例，全部放在一个字符串中)\",\"编程题(包括编程题题目，题目描述，输入用例，输出用例，全部放在一起)\"] } ] \" +\n" +
                "                \"##注意：" + "\n"+
                "                1. 严格按照我提供的格式返回数据" + "\n"+
                "                2. 一共生成的题目数量必须是18道" + "\n"+
                "                3. 编程题题目中必须包含编程题题目，题目描述，输入用例，输出用例，全部放在一个字符串中" + "\n" +
                "                4. 生成的所有题目(选择题，问答题，编程题)都必须要和用户面试的岗位有关系" + "\n" +
                "                5. 问答题部分除了包含技术问答题还需要有系统设计题" + "\n" +
                "                6. 一定要返回标准的json数据格式，引号使用英文的引号";
    }


    private static final String API_BASE = "http://maas-api.cn-huabei-1.xf-yun.com/v1";
    private static final String API_KEY = "sk-vvPDo0BNQk6WowVc7d17C82d977a4a029781146c0d12BdE7";
    private static final String MODEL_ID = "xdeepseekv3";

    /**
     * 单轮对话、非流式、带系统提示
     */
    public static String generateExamQuestion(String position, String interviewRole,String company) {
        JSONArray messages = new JSONArray();

        messages.add(new JSONObject()
                    .set("role", "system")
                    .set("content", SYSTEM_PROMPT));

        messages.add(new JSONObject()
                .set("role", "user")
                .set("content", "笔试公司："+company+"，  笔试岗位："+position+"，  笔试身份："+interviewRole));

        JSONObject body = new JSONObject()
                .set("model", MODEL_ID)
                .set("messages", messages)
                .set("stream", false)
                .set("temperature", 0.7)
                .set("max_tokens", 2048);

        try (HttpResponse resp = HttpRequest.post(API_BASE + "/chat/completions")
                .header("Authorization", "Bearer " + API_KEY)
                .header("Content-Type", "application/json")
                .body(body.toString())
                .execute()) {

            if (resp.isOk()) {
                JSONObject json = new JSONObject(resp.body());
                return json.getByPath("choices[0].message.content", String.class);
            } else {
                throw new RuntimeException("HTTP 错误: " + resp.getStatus() + " " + resp.body());
            }
        }
    }

    public static void main(String[] args) {
        String reply = generateExamQuestion("java后端开发", "实习生", "科大讯飞");
        System.out.println("模型回复：\n" + reply);
    }

}
